草庐IT

Java TCP Socket等待空闲?

全部标签

java - 在 java 中,如何等待多个 `Conditions`,直到其中任何一个被发出信号

假设一个电梯模拟程序,要乘车的游客要等到任何一扇电梯门打开。即我想等待多个Conditions直到其中任何一个被发出信号。其实不一定是Conditions,其他能满足我需求的方法也欢迎。这在Java中如何实现? 最佳答案 您可能会找到CountDownLatch做你需要的工作。您将实例化计数为1的锁存器:CountDownLatchlatch=newCountDownLatch(1);然后在您的线程之间共享它。所有等待门打开的线程都将执行latch.await()。在另一个线程调用latch.countDown()之前,此方法不会返

java - Thread.sleep 等待时间超过预期

以下代码:longmsBefore=System.currentTimeMillis();//Thread.currentThread().setPriority(Thread.MAX_PRIORITY);try{Thread.sleep(200);}catch(InterruptedExceptione){}System.out.println("Time:"+(System.currentTimeMillis()-msBefore));打印:Time:578Time:594Time:625Time:640Time:641Time:609Time:625Time:625Time:61

java - 如何等待 Java 中的多个任务完成?

在Java应用程序中实现并发的正确方法是什么?我知道线程和其他东西,当然,我已经为Java编程10年了,但在并发方面没有太多经验。例如,我必须异步加载一些资源,只有在所有资源都加载完之后,我才能继续做更多的工作。不用说,没有命令他们将如何完成。我该怎么做?在JavaScript中,我喜欢使用jQuery.deferred基础结构,比如说$.when(deferred1,deferred2,deferred3...).done(function(){//hereeverythingisdone...});但是我在Java中做什么呢? 最佳答案

Java InputStream 等待数据。

我正在开发服务器-客户端应用程序,但在等待输入流上的输入数据时遇到问题。我有线程专用于读取输入数据。目前它使用while循环来保持直到数据可用。(注意协议(protocol)如下:发送数据包的大小,比如N,作为int然后发送N个字节)。publicvoidrun(){//someinitializationInputStreaminStream=sock.getInputStream();byte[]packetData;//somemorestuffwhile(!interrupted){while(inStream.available()==0);packetData=newbyt

java - 如何立即释放等待 BlockingQueue 的线程

考虑一个BlockingQueue和一些等待poll(long,TimeUnit)的线程(可能也在take()上)。现在队列是空的,需要通知正在等待的线程可以停止等待了。预期的行为是返回null或抛出声明的InterruptedException。Object.notify()不适用于LinkedBlockingQueue,因为线程正在等待内部锁。有什么直接的方法吗? 最佳答案 BlockingQueue的Javadoc提出了一个好方法:ABlockingQueuedoesnotintrinsicallysupportanykind

Python + Selenium —— 三种等待方式!

为什么需要等待?自动化测试脚本在运行时,由于网络原因、机器卡顿、页面元素呈现等原因,导致定位失败。定位失败导致元素无法操作,获取不到用于断言的内容。最终在检查测试结果时就会出现很多因为这些原因而导致的测试失败,需要花大量精力来排查才能找到真正意义上的问题。所以必须要使用等待。其实Selenium是有默认等待的,当你打开页面时默认会等待页面元素加载完毕才进行元素定位。但是页面加载完毕后产生变化的元素则无法产生等待。导致页面产生变化的原因:ajax动态加载内容JavaScript某些动作改变HTML页面元素:比如增加、删除元素,隐藏与可见元素等通常来说,我们经常会使用三种等待方式:强制等待隐式等待

java - 超过 hibernate 锁等待超时;

我正在使用Hibernate,试图模拟对数据库中同一行的2个并发更新。编辑:我将em1.getTransaction().commit移到了em1.flush()之后;我没有收到任何StaleObjectException,这两个事务已成功提交。Sessionem1=Manager.sessionFactory.openSession();Sessionem2=Manager.sessionFactory.openSession();em1.getTransaction().begin();em2.getTransaction().begin();UserAccountc1=(User

java - ActiveMQ KahaDB 总是锁定和等待

我正在尝试在一个相对简单的工作队列用例中使用ActiveMQ。我有一个队列,有一个简单的生产者和消费者。我的问题是我做错了什么不断使数据库锁定?这是我不断收到的消息:14/04/0518:14:13INFOstore.SharedFileLocker:Databaseactivemq-data\localhost\KahaDB\lockislocked...waiting10secondsforthedatabasetobeunlocked.Reason:java.io.IOException:File'activemq-data\localhost\KahaDB\lock'could

Java,不要等待线程完成

我需要找到一种方法来从静态调用中分离出一个线程,而不是等待线程完成。基本上,这是一种“即发即忘”的方法。有人能给我提供一个简单的例子来说明如何实现吗? 最佳答案 Threadt=newThread(newYourClassThatImplementsRunnable());t.start();//JDK8newThread(()->methodYouWantToRun()).start(); 关于Java,不要等待线程完成,我们在StackOverflow上找到一个类似的问题:

java - 等待/通知如何在 JVM 级别工作?

等待和通知看起来像是在线程之间传递的消息,如果这是真的,则必须有队列来缓冲这些消息。如果是这样,那么必须有用于向队列中添加消息和从队列中删除消息的原子操作,还必须有一个用于监听这些消息的每个Java线程的辅助线程?很高兴听到您的想法。 最佳答案 Waitandnotifyseemlikemessagesthatarepassedbetweenthreads,它们真的不是消息。当线程调用wait()时,它会将自己放入与特定对象监视器关联的等待队列中。当另一个线程调用notify()时,它会将第一个线程(如果有)从队列中拉出并将其放入“